/**
 * 关闭窗口
 * @param windowObj
 */
function closeWindow(windowObj){
	var targetWindow=windowObj;
	if(windowObj==null){
		targetWindow=parent;
	}
	if(targetWindow==null){
		targetWindow=window;
	}
	try{	
		targetWindow.opener=null;
		targetWindow.open('','_self');
	}catch(e){}
	targetWindow.close();	
}

/**
 * 拆分组合主键，获取指定位置的值
 * @param content 要拆分的内容
 * @param index 获取指定位置的值(从1开始) 
 * @param devide 拆分的分隔符

 */
function getIndex(content,index,devide){
	if(devide==null){
		devide='_';
	}
	if(index==null ||index<1){
		index=1;
	}
	var values= content.split(devide);
	if(values.length<index){
		alert("请设置正确的 index 值！");
		return null;
	}	
	return values[index-1];
}
/*
*取消(关闭)
*/
function onDoClose(windowObj){
	if(window.confirm("确认要关闭吗？")){
		closeWindow(windowObj);
	}
}
/*
*取消(关闭)
*/
function onDoCancel(windowObj){
	if(window.confirm("确认要取消吗？")){
		closeWindow(windowObj);
	}
}

/*
*取消(回退)
*@param  url 返回的url(不带工程名，自动追加工程名称)
*@param  tip 返回确认的提示信息，没有指定则为默认的提示
*/
function onDoBack(url,tip){
  	if( (tip==null&&window.confirm("确认要返回吗？"))||(tip!=null&&window.confirm(tip)) ){
		window.location.href=basePath+url;
  	}
  }
/**
 * 获取选中的值数组
 * @param devide 拆分的分隔符
 * @param index 主键的位置(从1开始)
 */  
function getSelectedValues(devide,index){
	var items=fisherGetSelectedValues();
	var values=new Array();
	for(var i=0;i<items.length;i++){
		values[i]=getIndex(items[i],index,devide);
	}
	return  values;
} 
/**
 * 获取选中的值参数字符串，没有选中任何值则范围空串
 * @param devide 拆分的分隔符
 * @param index 主键的位置(从1开始)
 * @param parameter 参数名称 
 */  
function getParameterSelectedValues(devide,index,parameter){  
    if(parameter==null||parameter==""){//没有设置参数，则使用默认的domainIds
       parameter="domainIds";
    }  
	var values=getSelectedValues(devide,index);
	var parameters="";
	for(var i=0;i<values.length;i++){
		parameters+="&"+parameter+"="+values[i];
	}	
	return parameters;
}
/**
 * open的操作
 * @param url 操作执行的url
 * @param devide 拆分的分隔符
 * @param index 主键的位置(从1开始)
 * @param tip 操作名称(默认为删除)
 * @param datas 值(没有指定则取选中列表的值)
 * @param sucess 操作成功后的回调函数参数，没有指定则用默认的   
 * @param paramName 选中的值传递到后台的参数名称
 * @param content 操作内容名称(默认为项)
 */
function onDoOpen(parameters){
	var callback=function(options){//回调函数
		if(options.url.indexOf("?")==-1){//没有设置参数，则追加?
			options.url=options.url+"?"
		}
		for(var i=0;i<options.values.length;i++){//追加参数
			options.url=options.url+"&"+options.paramName+"="+options.values[i];
		}		
		//alert(options.url);
		top.MyWindow.open(options);		
	};
	onDoFisher(parameters,callback);;
}
/**
 * ajax的操作
 * @param url 操作执行的url
 * @param devide 拆分的分隔符
 * @param index 主键的位置(从1开始)
 * @param tip 操作名称(默认为删除)
 * @param datas 值(没有指定则取选中列表的值)
 * @param sucess 操作成功后的回调函数参数，没有指定则用默认的   
 * @param paramName 选中的值传递到后台的参数名称(默认为domainIds)
 * @param content 操作内容名称(默认为项)
 */
function onDoAjax(parameters){
	var callback=function(options){//回调函数
					var url=replaceAll(options.url,"&amp;","&");//防止带html参数标记的标志
					var data="";
					for(var i=0;i<options.values.length;i++){
						data+="&"+options.paramName+"="+options.values[i];
					}
					loading("<br><br><img src='"+getContextPath()+"/image/loading.gif' ><br>我正在努力处理中，请耐心等待...<br><br>",window);
					//alert(data);
					$.ajax({
					   type: "POST",
					   dataType: "json",
					   url: url,
					   data: data,
					   success: function(data){
					   		unloading(window);
							var result=data.result=='success';
							var message=data.message;
							if(result){
								top.MyWindow.tips({
									content : message,
									title : '成功框',
									type : 'success',
									container : top					
								});	
						   		if(options.sucess!=null){
						   			options.sucess();
						   		}else{
						   			window.fisherReload();
						   		}									
							}else{
								top.MyWindow.tips({
									content : message,
									title : '错误框',
									type : 'error',
									container : top					
								});			
							}	
					   },
					   error:function(data){
							unloading(window);					   
							top.MyWindow.tips({
								content : "对不起！操作失败，请与系统管理员联系！",
								title : '警告框',
								type : 'error',
								container : top					
							});	 
					   }
					 });	
	};
	var datas=parameters.datas;	
	if(datas==null){//没有设置值，则为列表批量操作
		onDoFisher(parameters,callback);
	}else{//有设置值，则为单个http操作
		onDoSingle(parameters,callback);
	}	
}

/**
 * Single的操作
 * @param url 操作执行的url
 * @param devide 拆分的分隔符(默认为_)
 * @param index 主键的位置(从1开始)
 * @param tip 操作名称(默认为删除)
 * @param datas 值(没有指定则取选中列表的值)
 * @param sucess 操作成功后的回调函数参数，没有指定则用默认的   
 * @param paramName 选中的值传递到后台的参数名称(默认为domainIds)
 * @param content 操作内容名称(默认为项)
 * @param title 弹出窗口标题[可选]，默认为defaultTitle
 * @param source 弹出位置的窗口
 * @param buttons 弹出窗口操作按钮[可选]
 * @param multiplewidth 弹出窗口倍宽[可选]，默认为1倍宽
 * @param multipleheight 弹出窗口倍长[可选]，默认为1倍长
 * @param tipstitle 弹出窗口提示栏标题[可选]
 * @param tipscontent 弹出窗口提示栏内容[可选] 
 * @param container 弹出窗口容器[可选]，默认为top 
 * @param callback 确认通过后的回调函数
 */
function onDoSingle(parameters,callback){
	var url=parameters.url;
	var devide=parameters.devide;
	var index=parameters.index;
	var tip=parameters.tip;
	if(tip==null){
		tip="删除";
	}
	var datas=parameters.datas;
	var sucess=parameters.sucess;
	var paramName=parameters.paramName;
	if(paramName==null){
	   paramName="domainIds";
	}	
	var content=parameters.content;
	if(content==null){
		content="项";
	}	
	var items;
	if(datas==null){
		top.MyWindow.tips({
			content : "要操作的值[datas]没有指定，，此处应该不为空，请与系统管理员联系！",
			title : '警告框',
			type : 'error',
			container : top					
		});	
		return false;
	}else{
		items=new String(datas).split(',');
	}
	var values=new Array();
	for(var i=0;i<items.length;i++){
		values[i]=getIndex(items[i],index,devide);
	}	
	if(items.length==0){
		top.MyWindow.tips({
			content : "请选择要【"+tip+"】的"+content+"！",
			title : '警告框',
			type : 'error',
			container : top					
		});			
	}else{
		top.MyWindow.confirm({
			content : "你确实要【"+tip+"】选中的"+content+"吗？",
			title : '确认框',
			container : top,
			callback : function(action){
			　　　if(action == 'ok'){
					var options={
						title : parameters.title,
						url : url,
						source : parameters.source,
						buttons : parameters.buttons,
						multiplewidth : parameters.multiplewidth,
						multipleheight : parameters.multipleheight,
						tipstitle : parameters.tipstitle,
						tipscontent : parameters.tipscontent,
						container : parameters.container,					
						paramName : paramName,
						values : values,
						sucess : sucess
					};
					callback(options);
			　　　}
			}
		});	
	}	
}
/**
 * Fisher的操作
 * @param url 操作执行的url
 * @param devide 拆分的分隔符(默认为_)
 * @param index 主键的位置(从1开始)
 * @param tip 操作名称(默认为删除)
 * @param datas 值(没有指定则取选中列表的值)
 * @param sucess 操作成功后的回调函数参数，没有指定则用默认的   
 * @param paramName 选中的值传递到后台的参数名称(默认为domainIds)
 * @param content 操作内容名称(默认为项)
 * @param title 弹出窗口标题[可选]，默认为defaultTitle
 * @param source 弹出位置的窗口
 * @param buttons 弹出窗口操作按钮[可选]
 * @param multiplewidth 弹出窗口倍宽[可选]，默认为1倍宽
 * @param multipleheight 弹出窗口倍长[可选]，默认为1倍长
 * @param tipstitle 弹出窗口提示栏标题[可选]
 * @param tipscontent 弹出窗口提示栏内容[可选] 
 * @param container 弹出窗口容器[可选]，默认为top 
 * @param callback 确认通过后的回调函数
 */
function onDoFisher(parameters,callback){
	var url=parameters.url;
	var devide=parameters.devide;
	var index=parameters.index;
	var tip=parameters.tip;
	if(tip==null){
		tip="删除";
	}
	var datas=parameters.datas;
	var sucess=parameters.sucess;
	var paramName=parameters.paramName;
	if(paramName==null){
	   paramName="domainIds";
	}	
	var content=parameters.content;
	if(content==null){
		content="项";
	}	
	var items;
	if(datas==null){
		items=fisherGetSelectedValues();
	}else{
		top.MyWindow.tips({
			content : "有指定要操作的值[datas]，此处应该为空，请与系统管理员联系！",
			title : '警告框',
			type : 'error',
			container : top					
		});
		return false;
	}
	var values=new Array();
	for(var i=0;i<items.length;i++){
		values[i]=getIndex(items[i],index,devide);
	}	
	if(items.length==0){
		top.MyWindow.tips({
			content : "请选择要【"+tip+"】的"+content+"！",
			title : '警告框',
			type : 'error',
			container : top					
		});			
	}else{
		top.MyWindow.confirm({
			content : "你确实要【"+tip+"】选中的"+content+"吗？",
			title : '确认框',
			container : top,
			callback : function(action){
			　　　if(action == 'ok'){
					var options={
						title : parameters.title,
						url : url,
						source : parameters.source,
						buttons : parameters.buttons,
						multiplewidth : parameters.multiplewidth,
						multipleheight : parameters.multipleheight,
						tipstitle : parameters.tipstitle,
						tipscontent : parameters.tipscontent,
						container : parameters.container,					
						paramName : paramName,
						values : values,
						sucess : sucess
					};
					callback(options);
			　　　}
			}
		});	
	}	
}	
/**
 * 批量编辑保存的操作
 * @param url 操作执行的url
 * @param devide 拆分的分隔符(默认为_)
 * @param index 主键的位置(从1开始)
 * @param tip 操作名称(默认为删除)
 * @param datas 值(没有指定则取选中列表的值)
 * @param sucess 操作成功后的回调函数参数，没有指定则用默认的   
 * @param paramPrefixName 保存的值传递到后台的参数前缀名称(默认为domains)
 * @param content 操作内容名称(默认为项)
 */		
function fisherSaves(parameters){
	var url=parameters.url;
	var devide=parameters.devide;
	var index=parameters.index;
	var tip=parameters.tip;
	if(tip==null){
		tip="保存";
	}
	var datas=parameters.datas;
	var sucess=parameters.sucess;
	var paramPrefixName=parameters.paramPrefixName;
	if(paramPrefixName==null){
	   paramPrefixName="domains";
	}	
	var content=parameters.content;
	if(content==null){
		content="项";
	}					
	var data="";
	$('.flexigrid .bDiv tbody tr').each(function(trIndex,tr){//遍历数据行
											var pid=getIndex(tr.id.substr(3),index,devide);
											if(pid!=-1){//排除合计行
												data+="&"+paramPrefixName+"["+trIndex+"].id="+pid;
												//alert(trIndex+":("+pid+")"+$(tr).find("[edit]").length);
												//alert(trIndex+"\n"+$(tr).html());
												var checkboxs=new Array();//当前行的所有checkbox或者radio
												$(tr).find("[edit][name]").each(function(eleIndex,domEle){//遍历编辑元素
																					var type=$(domEle).attr("type");
																					var name=$(domEle).attr("edit");
																					var value=$(domEle).val();
																					if(type!=null&&(type.toLowerCase()=="checkbox"||type.toLowerCase()=="radio")){
																						//alert($(tr).find("input:checked[name='"+$(domEle).attr("name")+"']").length);
																						var i;
																						for(i=0;i<checkboxs.length;i++){//遍历当前行的所有checkbox或者radio
																							if(checkboxs[i]==name){
																								break;
																							}
																						}
																						if(i==checkboxs.length){//添加没有的
																							checkboxs[checkboxs.length++]=name;
																						}
																					}else{
																						//alert(trIndex+":"+name+"="+$(domEle).val());
																						data+="&"+paramPrefixName+"["+trIndex+"]."+name+"="+value;
																					}
																				 });
												//alert(trIndex+":"+checkboxs.length);
												for(var i=0;i<checkboxs.length;i++){//遍历当前行的所有checkbox或者radio
													var name=checkboxs[i];
													var value="";
													var checked=$(tr).find("input:checked[edit='"+name+"']");
													//alert(trIndex+":"+name+"="+checked.length);
													if(checked.length!=0){//有选中值
														checked.each(function(index,check){
																		value=$(check).val();
																		data+="&"+paramPrefixName+"["+trIndex+"]."+name+"="+value;
																	  });
													}else{
														data+="&"+paramPrefixName+"["+trIndex+"]."+name+"="+value;
													}
												}
										   }
										});
	//alert(data);
	var callback=function(options){//回调函数
						var url=replaceAll(options.url,"&amp;","&");//防止带html参数标记的标志
						var data=options.data;
						//alert(data);
						$.ajax({
						   type: "POST",
						   dataType: "json",
						   url: url,
						   data: data,
						   success: function(data){
								var result=data.result=='success';
								var message=data.message;
								unloading(window);
								if(result){
									top.MyWindow.tips({
										content : message,
										title : '成功框',
										type : 'success',
										container : top					
									});	
							   		if(options.sucess!=null){
							   			options.sucess();
							   		}else{
							   			window.fisherReload();
							   		}
								}else{
									top.MyWindow.tips({
										content : message,
										title : '错误框',
										type : 'error',
										container : top					
									});			
								}					   		
						   },
						   error:function(data){
						   		unloading(window);
								top.MyWindow.tips({
									content : "对不起！操作失败，请与系统管理员联系！",
									title : '警告框',
									type : 'error',
									container : top					
								});	       
						   }
						 });
					}
	var result = EasyValidator.pageValidate();
	if(!result.success){//验证失败
		var messages="<br>\n";
		for(var i=0;i<result.invalidControls.length;i++){
			messages+=(i+1)+"."+result.msgs[0]+"<br>\n";
			if(i==0){//选中并聚焦到第一个失败的	
				try{//防止不能选择的报错
				    result.invalidControls[0].select();
				}catch(e){}              
				try{//防止不能聚焦的报错
				    result.invalidControls[0].focus();
				}catch(e){}  
				top.MyWindow.tips({
					content : result.msgs[0],
					title : '错误框',
					type : 'error',
					container : top,
					timer : 500					
				});										            			
            }					
		}
		//alert(messages);					
	}else{			
		top.MyWindow.confirm({
			content : "你确实要【"+tip+"】修改的"+content+"吗？",
			title : '确认框',
			container : top,
			callback : function(action){
			　　　if(action == 'ok'){
					var options={
						url : url,
						data : data,
						sucess : sucess
					};
					loading("<br><br><img src='"+getContextPath()+"/image/loading.gif' ><br>我正在努力处理中，请耐心等待...<br><br>",window);
					callback(options);						
			　　　}
			}
		});	
	}			
}	
//加载提示
function loading(message,container){
	//alert("loading:"+document.location.href);
	if(container==null){
		container=top;
	}
	try{
		if(message!=null){
			container.$.blockUI.defaults.message=message;
		}
		container.$.blockUI(); 
	}catch(e){
		//alert("loading:"+e.description);
	}
}
//关闭加载提示
function unloading(container){
	//alert("unloading:"+document.location.href);
	if(container==null){
		container=top;
	}	
	try{
		container.$.unblockUI();
		$(".blockUI").fadeOut("slow");//IE8不能关闭
	}catch(e){
		//alert("unloading:"+e.description);
	}
}
/**
 * 选择树
 * @param title 窗口标题[可选] 
 * @param type 树类型 
 * @param returnIdName 回写结果id的名称 
 * @param returnTextName 回写结果text的名称 
 * @param rootIds 根节点[可选] 
 * @param excludeIds 排除节点[可选]
 * @param level 展开层数[可选] 
 * @param checkbox 是否checkbox[可选]
 * @param checkedValues 默认选中的值[可选]
 * @param threeState 是否三态[可选] 
 * @param require 是否不允许为空[可选] 
 * @param tipstitle 提示栏标题[可选]
 * @param tipscontent 提示栏内容[可选]
 * @return void
 */
function onDoSelectTree(parameters){
	var url=getContextPath()+'/share/treeSelect.jsp';
	url+='?type='+parameters.type;
	url+='&returnIdName='+parameters.returnIdName;
	url+='&returnTextName='+parameters.returnTextName;
	url+='&rootIds='+parameters.rootIds;
	url+='&excludeIds='+parameters.excludeIds;
	url+='&level='+parameters.level;
	url+='&checkbox='+parameters.checkbox;
	url+='&checkedValues='+parameters.checkedValues;
	url+='&threeState='+parameters.threeState;
	url+='&require='+parameters.require;
	var options={
		title:parameters.title,
		url:url,
		source : window,
		buttons:[top.MyWindow.Select,top.MyWindow.Cancel],
		multiplewidth:0.4,
		multipleheight:1,
		tipstitle:parameters.tipstitle,
		tipscontent:parameters.tipscontent
	};
	top.MyWindow.open(options);	
}
/*
* 全选(根据源checkbox的选中状态设置destCheckboxName的状态)
* @param srcCheckboxObj  源checkbox
* @param destCheckboxName  目标checkbox的名称
*/
 function onDoSelectAllCheckboxByName(srcCheckboxObj,destCheckboxName){
	$("input[name*='"+destCheckboxName+"']").attr("checked",$(srcCheckboxObj).attr("checked"));
 }
 /*
* 全选(根据源checkbox的选中状态设置destCheckboxId的状态)
* @param srcCheckboxObj  源checkbox
* @param destCheckboxId  目标checkbox的id
*/
 function onDoSelectAllCheckboxById(srcCheckboxObj,destCheckboxId){
	$("input[id*='"+destCheckboxId+"']").attr("checked",$(srcCheckboxObj).attr("checked"));
 }
/*
* 选中指定值数组的checkbox
* @param checkboxName  checkbox的名称
* @param valueArrays  值数组
*/ 
 function onDoSetCheckboxsByName(checkboxName,valueArrays){
 	//alert(valueArrays);
	$("input[name*='"+checkboxName+"']").each(function(){
															var current=this;
															//alert($(current).attr("value"));
															$.each(valueArrays,function(){
																							//alert(this);
																							if($(current).attr("value")==this){
																								//alert("check:"+$(current).attr("value"));
																								$(current).attr("checked",true);
																							}
																						});
														});
 }
/*
* 选中指定值数组的checkbox
* @param checkboxId  checkbox的id
* @param valueArrays  值数组
*/ 
 function onDoSetCheckboxsById(checkboxId,valueArrays){
 	//alert(valueArrays);
	$("input[id*='"+checkboxId+"']").each(function(){
															var current=this;
															//alert($(current).attr("value"));
															$.each(valueArrays,function(){
																							//alert(this);
																							if($(current).attr("value")==this){
																								//alert("check:"+$(current).attr("value"));
																								$(current).attr("checked",true);
																							}
																						});
														});
 }
/*
 * 替换指定规则的内容为指定的替换内容
 */
function replaceAll(content,regex,replacement){
	var index=0;
	while((index=content.indexOf(regex,index))!=-1){
	    //alert(content+"="+index);
		content=content.substring(0,index)+replacement+content.substring(index+regex.length,content.length);
		index+=replacement.length;
		//alert(content+"="+index);
	}	
	return content;
}
/*
* 获取项目路径
*/
function getContextPath(){
	if(contextPath!=null){//外部有设置
		return contextPath;
	}
	var path = window.document.location.pathname;
	var projectPath = path.substring(0, path.substr(1).indexOf('/') + 1);
	//alert (path);
	//alert (projectPath);
	return projectPath;
}
/*
* 获取项目根路径
*/
function getBasePath(){
	if(basePath!=null){//外部有设置
		return basePath;
	}
	var href = window.document.location.href;
	var path = window.document.location.pathname;
	var serverPath = href.substring(0, href.indexOf(path));
	//alert (href);
	//alert (path);
	//alert (serverPath);
	return serverPath+getContextPath();
}
 //xl 2012-05-29  添加下拉框中值
function addSelectInfo(propertyId,codeValue){
	top.codeItemParentWindow=window;	
	top.codeItemValue=codeValue;
	top.selectPropertyId=propertyId;
	var  url= getContextPath()+"/system/code/sonList.action?codeValue="+codeValue;
	var options={
			title:'【新增下拉框选项】',
			url:url,
			buttons:[top.MyWindow.Close],
			source : window,
			multiplewidth:1,
			multipleheight:1
		};
	top.MyWindow.open(options);
}
//xl 2012-05-29  刷新下拉框
function refreshSelect()
{
	var url=getContextPath()+"/system/codeitem/getCodeItems.action?codeValue="+top.codeItemValue;
	jQuery("#"+top.selectPropertyId).FillOptions(url,{datatype:"json",textfield:"name",valuefiled:"value"});
} 
/*
* 编码类型过滤器的Renderer函数
*/
function codeFilterRenderer(tdDiv,pid){

}
/*
* 编码类型过滤器的Renderer函数
*/
function typeFilterRenderer(tdDiv,pid){

}
/*
* 标记为绿色的Renderer函数
*/
function greenRenderer(tdDiv,pid){
    var source=$(tdDiv).html();//原内容
	$(tdDiv).html("<span title='"+source+"' style='color:green'>"+source+"</span>");		
}
/*
* 标记为红色的Renderer函数
*/
function redRenderer(tdDiv,pid){
    var source=$(tdDiv).html();//原内容
	$(tdDiv).html("<span title='"+source+"' style='color:red'>"+source+"</span>");		
}
/*
* 标记为灰色的Renderer函数
*/
function grayRenderer(tdDiv,pid){
    var source=$(tdDiv).html();//原内容
	$(tdDiv).html("<span title='"+source+"' style='color:gray'>"+source+"</span>");		
}
try{//对于不支持document.onreadystatechange 事件的浏览器，则调用jquery的onload方法关闭
	$(function(){
		unloading();
	});
}catch(e){}
//判断网页是否加载完成，完成后关闭加载提示
document.onreadystatechange = function () { 
	if(document.readyState=="complete") {//页面加载完成,则关闭加载提示
		unloading();
	}
}
try{//对设置有watermark属性的添加水印提示
	$(function(){
		$("*[watermark]").each(function(){
			//alert($(this).attr("readonly")+":"+$(this).attr("disabled"));
			if($(this).attr("readonly")!=true//非只读
				&&$(this).attr("disabled")!=true){//非禁用
				//alert($(this).attr("watermark"));
				$(this).watermark($(this).attr("watermark"),{className:'Watermark',useNative:true});
			}
		});
	});
}catch(e){}
/*
* Combox销毁
*/
function onDoComboxDestroy(selectObj){
	if(selectObj.relatedCombox){
		selectObj.relatedCombox.destroy();
	}
}
/*
* Combox转换
*/
function onDoComboxTransform(selectObj){
	if(selectObj.options.length !=0){
		new combox(selectObj).transform();
	}
}